home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-10-12 | 8.3 KB | 371 lines | [TEXT/PJMM] |
- unit OSUtils;
-
- { Pascal Interface to the Macintosh Libraries }
-
- { Copyright © Apple Computer Inc. }
- { All Rights Reserved }
-
- { Adapted for use with THINK Pascal 4.0.x by Marco Piovanelli }
-
- interface
- uses
- Types;
-
- const
- useFree = 0;
- useATalk = 1;
- useAsync = 2;
- useExtClk = 3; {Externally clocked}
- useMIDI = 4;
- { Environs Equates }
- curSysEnvVers = 2; {Updated to equal latest SysEnvirons version}
- { Machine Types }
- envMac = -1;
- envXL = -2;
- envMachUnknown = 0;
- env512KE = 1;
- envMacPlus = 2;
- envSE = 3;
- envMacII = 4;
- envMacIIx = 5;
- envMacIIcx = 6;
- envSE30 = 7;
- envPortable = 8;
- envMacIIci = 9;
- envMacIIfx = 11;
- { CPU types }
- envCPUUnknown = 0;
-
- env68000 = 1;
- env68010 = 2;
- env68020 = 3;
- env68030 = 4;
- env68040 = 5;
- { Keyboard types }
- envUnknownKbd = 0;
- envMacKbd = 1;
- envMacAndPad = 2;
- envMacPlusKbd = 3;
- envAExtendKbd = 4;
- envStandADBKbd = 5;
- envPrtblADBKbd = 6;
- envPrtblISOKbd = 7;
- envStdISOADBKbd = 8;
- envExtISOADBKbd = 9;
- false32b = 0; {24 bit addressing error}
- true32b = 1; {32 bit addressing error}
- { result types for RelString Call }
- sortsBefore = -1; {first string < second string}
- sortsEqual = 0; {first string = second string}
- sortsAfter = 1; {first string > second string}
-
- { Toggle results }
- toggleUndefined = 0;
- toggleOK = 1;
- toggleBadField = 2;
- toggleBadDelta = 3;
- toggleBadChar = 4;
- toggleUnknown = 5;
- toggleBadNum = 6;
- toggleOutOfRange = 7; {synonym for toggleErr3}
- toggleErr3 = 7;
- toggleErr4 = 8;
- toggleErr5 = 9;
- { Date equates }
- smallDateBit = 31; {Restrict valid date/time to range of Time global}
- togChar12HourBit = 30; {If toggling hour by char, accept hours 1..12 only}
- togCharZCycleBit = 29; {Modifier for togChar12HourBit: accept hours 0..11 only}
- togDelta12HourBit = 28; {If toggling hour up/down, restrict to 12-hour range (am/pm)}
- genCdevRangeBit = 27; {Restrict date/time to range used by genl CDEV}
- validDateFields = -1;
- maxDateField = 10;
- eraMask = $0001;
- yearMask = $0002;
- monthMask = $0004;
- dayMask = $0008;
- hourMask = $0010;
- minuteMask = $0020;
- secondMask = $0040;
- dayOfWeekMask = $0080;
- dayOfYearMask = $0100;
- weekOfYearMask = $0200;
- pmMask = $0400;
- dateStdMask = $007F; {default for ValidDate flags and ToggleDate TogglePB.togFlags}
-
- eraField = 0;
- yearField = 1;
- monthField = 2;
- dayField = 3;
- hourField = 4;
- minuteField = 5;
- secondField = 6;
- dayOfWeekField = 7;
- dayOfYearField = 8;
- weekOfYearField = 9;
- pmField = 10;
- res1Field = 11;
- res2Field = 12;
- res3Field = 13;
-
-
- type
- LongDateField = SignedByte;
-
-
- const
- dummyType = 0;
- vType = 1;
- ioQType = 2;
- drvQType = 3;
- evType = 4;
- fsQType = 5;
- sIQType = 6;
- dtQType = 7;
- nmType = 8;
-
-
- type
- QTypes = SignedByte;
-
-
- const
- OSTrap = 0;
- ToolTrap = 1;
-
-
- type
- TrapType = SignedByte;
-
- SysParmType = packed record
- valid: UInt8;
- aTalkA: UInt8;
- aTalkB: UInt8;
- config: UInt8;
- portA: INTEGER;
- portB: INTEGER;
- alarm: LONGINT;
- font: INTEGER;
- kbdPrint: INTEGER;
- volClik: INTEGER;
- misc: INTEGER;
- end;
- SysPPtr = ^SysParmType;
-
- QElemPtr = ^QElem;
-
- QElem = record
- qLink: QElemPtr;
- qType: INTEGER;
- qData: array[0..0] of INTEGER;
- end;
- QHdrPtr = ^QHdr;
-
- QHdr = record
- qFlags: INTEGER;
- qHead: QElemPtr;
- qTail: QElemPtr;
- end;
-
- { DeferredTaskProcPtr uses register based parameters on the 68k and cannot}
- { be written in or called from a high-level language without the help of}
- { mixed mode or assembly glue.}
-
- { In:}
- { => dtParam A1.L}
-
- DeferredTaskProcPtr = ProcPtr; { PROCEDURE DeferredTask(dtParam: LONGINT); }
- DeferredTaskUPP = UniversalProcPtr;
-
- DeferredTask = record
- qLink: QElemPtr;
- qType: INTEGER;
- dtFlags: INTEGER;
- dtAddr: DeferredTaskUPP;
- dtParam: LONGINT;
- dtReserved: LONGINT;
- end;
- DeferredTaskPtr = ^DeferredTask;
-
- SysEnvRec = record
- environsVersion: INTEGER;
- machineType: INTEGER;
- systemVersion: INTEGER;
- processor: INTEGER;
- hasFPU: BOOLEAN;
- hasColorQD: BOOLEAN;
- keyBoardType: INTEGER;
- atDrvrVersNum: INTEGER;
- sysVRefNum: INTEGER;
- end;
- MachineLocation = record
- latitude: Fract;
- longitude: Fract;
- case INTEGER of
- 0: (
- dlsDelta: SInt8; {signed byte; daylight savings delta}
- );
- 1: (
- gmtDelta: LONGINT; {must mask - see documentation}
- );
- end;
- DateTimeRec = record
- year: INTEGER;
- month: INTEGER;
- day: INTEGER;
- hour: INTEGER;
- minute: INTEGER;
- second: INTEGER;
- dayOfWeek: INTEGER;
- end;
- LongDateTime = wide;
-
- LongDateCvt = record
- case INTEGER of
- 0: (
- c: wide;
- );
- 1: (
- lHigh: UInt32;
- lLow: UInt32;
- );
- end;
- LongDateRec = record
- case INTEGER of
- 0: (
- era: INTEGER;
- year: INTEGER;
- month: INTEGER;
- day: INTEGER;
- hour: INTEGER;
- minute: INTEGER;
- second: INTEGER;
- dayOfWeek: INTEGER;
- dayOfYear: INTEGER;
- weekOfYear: INTEGER;
- pm: INTEGER;
- res1: INTEGER;
- res2: INTEGER;
- res3: INTEGER;
- );
- 1: (
- list: array[0..13] of INTEGER; {Index by LongDateField!}
- );
- 2: (
- eraAlt: INTEGER;
- oldDate: DateTimeRec;
- );
- end;
- DateDelta = SInt8;
-
- TogglePB = record
- togFlags: LONGINT; {caller normally sets low word to dateStdMask=$7F}
- amChars: ResType; {from 'itl0', but uppercased}
- pmChars: ResType; {from 'itl0', but uppercased}
- reserved: array[0..3] of LONGINT;
- end;
- ToggleResults = INTEGER;
-
- const
- uppDeferredTaskProcInfo = $0000B802; { Register PROCEDURE (4 bytes in A1); }
-
- function NewDeferredTaskProc (userRoutine: DeferredTaskProcPtr): DeferredTaskUPP;
- inline
- $2E9F;
-
- procedure CallDeferredTaskProc (dtParam: LONGINT;
- userRoutine: DeferredTaskUPP);
- {To be implemented: Glue to move parameters into registers.}
-
- procedure LongDateToSeconds ({CONST}
- var lDate: LongDateRec;
- var lSecs: LongDateTime);
- inline
- $2F3C, $8008, $FFF2, $A8B5;
- procedure LongSecondsToDate (var lSecs: LongDateTime;
- var lDate: LongDateRec);
- inline
- $2F3C, $8008, $FFF0, $A8B5;
- function ToggleDate (var lSecs: LongDateTime;
- field: ByteParameter;
- delta: ByteParameter;
- ch: INTEGER; {CONST}
- var params: TogglePB): ToggleResults;
- inline
- $2F3C, $820E, $FFEE, $A8B5;
- function ValidDate ({CONST}
- var vDate: LongDateRec;
- flags: LONGINT;
- var newSecs: LongDateTime): INTEGER;
- inline
- $2F3C, $820C, $FFE4, $A8B5;
- function IsMetric: BOOLEAN;
- inline
- $3F3C, $0004, $A9ED;
- function GetSysPPtr: SysPPtr;
- inline
- $2EBC, $0000, $01F8;
- function ReadDateTime (var time: LONGINT): OSErr;
- inline
- $205F, $A039, $3E80;
- procedure GetDateTime (var secs: LONGINT);
- inline
- $205F, $20B8, $020C;
- function SetDateTime (time: LONGINT): OSErr;
- inline
- $201F, $A03A, $3E80;
- procedure SetTime ({CONST}
- var d: DateTimeRec);
- inline
- $205F, $A9C7, $A03A;
- procedure GetTime (var d: DateTimeRec);
- inline
- $205F, $2038, $020C, $A9C6;
- procedure DateToSeconds ({CONST}
- var d: DateTimeRec;
- var secs: LONGINT);
- procedure SecondsToDate (secs: LONGINT;
- var d: DateTimeRec);
- inline
- $205F, $201F, $A9C6;
- function DTInstall (dtTaskPtr: DeferredTaskPtr): OSErr;
- inline
- $205F, $A082, $3E80;
-
- function GetOSTrapAddress (trapNum: INTEGER): UniversalProcPtr;
- inline
- $301F, $A346, $2E88;
- procedure SetOSTrapAddress (trapAddr: UniversalProcPtr;
- trapNum: INTEGER);
- inline
- $301F, $205F, $A247;
- function GetToolTrapAddress (trapNum: INTEGER): UniversalProcPtr;
- inline
- $301F, $A746, $2E88;
- procedure SetToolTrapAddress (trapAddr: UniversalProcPtr;
- trapNum: INTEGER);
- inline
- $301F, $205F, $A647;
- function GetToolboxTrapAddress (trapNum: INTEGER): UniversalProcPtr;
- inline
- $301F, $A746, $2E88;
- procedure SetToolboxTrapAddress (trapAddr: UniversalProcPtr;
- trapNum: INTEGER);
- inline
- $301F, $205F, $A647;
-
- procedure FlushCodeCacheRange (address: univ Ptr;
- count: LONGINT);
- inline
- $225F, $205F, $7009, $A098;
-
- procedure ReadLocation (var loc: MachineLocation);
- inline
- $205F, $203C, $000C, $00E4, $A051;
-
- procedure WriteLocation ({CONST}
- var loc: MachineLocation);
- inline
- $205F, $203C, $000C, $00E4, $A052;
-
- implementation
- end.